package xyz.heyaoshare.core.service.system;

import com.mybatisflex.core.service.IService;
import xyz.heyaoshare.common.entity.bo.ResultPage;
import xyz.heyaoshare.core.controller.system.dict.vo.req.*;
import xyz.heyaoshare.core.controller.system.dict.vo.resp.*;
import xyz.heyaoshare.core.entity.system.DictData;

import java.util.List;

/**
 * 字典数据 Service
 * @author YueHe
 * @version 0.0.1
 * @since 2025/6/25 下午2:03
 */
public interface DictDataService extends IService<DictData> {

    /**
     * 新增字典数据
     *
     * @param reqVO 新增对象
     * @return 新增状态
     */
    Boolean insert(DictDataInsertReqVO reqVO);

    /**
     * 字典数据分页
     *
     * @param reqVO 分页请求
     * @return 分页数据
     */
    ResultPage<DictDataPageRespVO> selectPage(DictDataPageReqVO reqVO);

    /**
     * 字典数据列表
     *
     * @param reqVO 请求参数
     * @return 字典数据列表
     */
    List<DictDataListRespVO> selectList(DictDataListReqVO reqVO);

    /**
     * 字典数据详情
     *
     * @param reqVO 请求参数
     * @return 详情数据
     */
    DictDataDetailRespVO selectDetail(DictDataDetailReqVO reqVO);

    /**
     * 删除字典数据
     *
     * @param reqVO 请求数据
     * @return 删除状态
     */
    Boolean delete(DictDataDeleteReqVO reqVO);

    /**
     * 更新字典数据
     *
     * @param reqVO 更新数据
     * @return 更新状态
     */
    Boolean updateData(DictDataUpdateReqVO reqVO);

    /**
     * 统一获取字典数据
     *
     * @param reqVO 请求参数
     * @return 响应数据
     */
    List<DictDataByTypeRespVO> getByType(DictDataByTypeReqVO reqVO);

    /**
     * 根据类型名称获取字典数据
     *
     * @param reqVO 请求参数
     * @return 响应数据
     */
    List<DictDataByTypeRespVO> getByTypeName(DictDataByTypeNameReqVO reqVO);

    /**
     * 字典统一数据
     *
     * @return 数据
     */
    List<DictSimpleListRespVO> simpleList();

}